#ifndef TERMSELECTION_H_
#define TERMSELECTION_H_

#include "./../definicionesParser.h"

/* Función que calcula la ponderación de un término
 * utilizando el método de Información Mutua Puntual
 * (En inglés: Pointwise Mutual Information)*/
double metodoMI();

/* Función que calcula la ponderación de un término
 * utilizando el método de Coeficiente GSS*/
double metodoGSS();

/* Función que calcula la ponderación de un término
 * utilizando el método de Coeficiente NGL*/
double metodoNGL();

/* Función que calcula la ponderación de un término
 * utilizando el método de Calificación de Relevancia
 * (En inglés: Relevancy Score)*/
double metodoRS();

/* Función que calcula la ponderación de un término
 * utilizando el método de Relación de Probabilidades
 * (En inglés: Odds Ratio)*/
double metodoOR();

/* Función que calcula la ponderación de un término
 * utilizando el método de TF*IDF, donde TF es la
 * frecuencia del término en un documento, e IDF es
 * la frecuencia inversa del documento*/
void metodoTFIDF(lista_t* aparicionesPalabra, unsigned int cantidadDocumentos);

/* Función que calcula la ponderación de un término
 * mediante la multiplicación entre el logaritmo de
 * la frecuencia del término en un documento con
 * el valor de la entropa global de los documentos*/
void metodoLogEntropia(lista_t* aparicionesPalabra, unsigned int cantidadDocumentos, unsigned int totalOcurrencias);

/* Función auxiliar que calcula el logaritmo en
 * base 2 de unNumero, pasado por parámetro*/
double logBase2(double unNumero);

#endif /* TERMSELECTION_H_ */
